//#define _CRT_SECURE_NO_WARNINGS 1
//#include <iostream>
//#include <cstring>
//#include <map>
//#include <vector>
//using namespace std;
//const int N = 2e5 + 10;
//typedef pair<int, int> PII;
//bool st[N];
//void solve()
//{
//	int n, k;
//	cin >> n >> k;
//	memset(st, false, sizeof st);
//	map<int, int> m;
//	bool flag = true;
//	int maxi = 0;
//	for (int i = 0; i < n; i++)
//	{
//		int a;
//		cin >> a;
//		maxi = max(maxi, a);
//		m[a] ++;
//		if (m[a] >= k)
//		{
//			st[a] = true;
//			flag = false;
//		}
//	}
//	vector<PII> v;
//	if (flag)
//	{
//		cout << -1 << endl;
//		return;
//	}
//
//	int l, r;
//	int l1 = 0, r1 = 0;
//	flag = false;
//	int ma = 0;
//	for (int i = 0; i <= maxi; i++)
//	{
//		if (st[i])
//		{
//			if (flag)
//				r++;
//			else
//			{
//				l = r = i;
//				flag = true;
//			}
//		}
//		else
//		{
//			if (flag)
//			{
//				flag = false;
//				if (r - l + 1 > ma)
//					v.push_back({ l, r });
//			}
//		}
//	}
//	cout << v[v.size() - 1].first << ' ' << v[v.size() - 1].second << endl;
//}
//int main()
//{
//	int t;
//	cin >> t;
//	while (t--)
//		solve();
//	return 0;
//}
//#include <iostream>
//using namespace std;
//const int N = 1e4 + 10;
//int e[N], ne[N];
//int main() {
//    int n, m;
//    cin >> n >> m;
//    for (int i = 1; i <= n; i++)
//    {
//        e[i] = i;
//        ne[i] = i + 1;
//    }
//    ne[n] = 1;
//    int k = 1;
//    int i = 1;
//    int n1 = n;
//    for (int i = 1, j = 1; n > 1; i = ne[i], j++)
//        if ((j + 1)% m == 0)
//        {
//            ne[i] = ne[ne[i]];
//            n--;
//            if (n == 1)
//                cout << e[i];
//        }
//}
#include <iostream>
#include <vector>
#include <map>
#include <set>
using namespace std;
const int N = 2e5 + 10;
typedef pair<int, int> PII;
void solve()
{
	int n, k;
	cin >> n >> k;
	map<int, int> m;
	set<int> s;
	bool flag = true;
	for (int i = 0; i < n; i++)
	{
		int a;
		cin >> a;
		m[a] ++;
		if (m[a] >= k)
		{
			s.insert(a);
			flag = false;
		}
	}
	vector<PII> v;
	if (flag)
	{
		cout << -1 << endl;
		return;
	}

	int l, r;
	vector<int> res;
	for (auto p : s)
		res.push_back(p);
	int ma = 0;
	for (int i = 0; i < res.size(); i++)
	{
		cout << res[i] << ' ';
		if (!i)
		{
			l = r = res[i];
			continue;
		}
		if (res[i] - res[i - 1] > 1)
		{
			if ((r - l + 1) >= ma)
			{
				v.push_back({ l, r });
				ma = r - l + 1;
			}
			l = r = res[i];
		}
		else
			r++;

	}
	cout << v[v.size() - 1].first << ' ' << v[v.size() - 1].second << endl;
}
int main()
{
	int t;
	cin >> t;
	while (t--)
		solve();
	return 0;
}